למד בדיקת השערות סטטיסטית בפייתון. מדריך זה מכסה מושגים, שיטות ויישומים מעשיים למדעי הנתונים.
מדעי נתונים בפייתון: מדריך מקיף לבדיקת השערות סטטיסטית
בדיקת השערות סטטיסטית היא היבט מכריע במדעי הנתונים, המאפשרת לנו לקבל החלטות מושכלות על סמך נתונים. היא מספקת מסגרת להערכת ראיות ולקביעה האם טענה לגבי אוכלוסייה סבירה להיות נכונה. מדריך מקיף זה יבחן את מושגי הליבה, השיטות והיישומים המעשיים של בדיקת השערות סטטיסטית באמצעות פייתון.
מהי בדיקת השערות סטטיסטית?
בבסיסה, בדיקת השערות היא תהליך של שימוש בנתוני מדגם כדי להעריך טענה לגבי אוכלוסייה. היא כוללת ניסוח שתי השערות מתחרות: השערת האפס (H0) וההשערה האלטרנטיבית (H1).
- השערת האפס (H0): זוהי הטענה שנבדקת. היא מייצגת בדרך כלל את הסטטוס קוו או חוסר השפעה. לדוגמה, "הגובה הממוצע של גברים ונשים זהה."
- השערה אלטרנטיבית (H1): זוהי הטענה שאנו מנסים למצוא ראיות לתמיכה בה. היא סותרת את השערת האפס. לדוגמה, "הגובה הממוצע של גברים ונשים שונה."
מטרת בדיקת ההשערות היא לקבוע האם יש מספיק ראיות לדחות את השערת האפס לטובת ההשערה האלטרנטיבית.
מושגי מפתח בבדיקת השערות
הבנת המושגים הבאים חיונית לביצוע ופירוש מבחני השערות:
ערך P
ערך ה-p הוא ההסתברות לצפות בסטטיסטי מבחן קיצוני כמו, או קיצוני יותר מ, זה שחושב מנתוני המדגם, בהנחה שהשערת האפס נכונה. ערך p קטן (בדרך כלל קטן מרמת המובהקות, אלפא) מצביע על ראיות חזקות נגד השערת האפס.
רמת מובהקות (אלפא)
רמת המובהקות (α) היא סף שנקבע מראש שמגדיר את כמות הראיות הנדרשת כדי לדחות את השערת האפס. ערכים נפוצים לאלפא הם 0.05 (5%) ו-0.01 (1%). אם ערך ה-p קטן מאלפא, אנו דוחים את השערת האפס.
שגיאה מסוג I ושגיאה מסוג II
בבדיקת השערות, ישנם שני סוגים של שגיאות שאנו יכולים לעשות:
- שגיאה מסוג I (חיובי שגוי): דחיית השערת האפס כאשר היא למעשה נכונה. ההסתברות לעשות שגיאה מסוג I שווה לאלפא (α).
- שגיאה מסוג II (שלילי שגוי): אי דחיית השערת האפס כאשר היא למעשה שקרית. ההסתברות לעשות שגיאה מסוג II מסומנת על ידי בטא (β).
עוצמת מבחן
עוצמת מבחן היא ההסתברות לדחות נכון את השערת האפס כאשר היא שקרית (1 - β). מבחן בעל עוצמה גבוהה סביר יותר לזהות השפעה אמיתית.
סטטיסטי מבחן
סטטיסטי מבחן הוא מספר יחיד שמחושב מנתוני מדגם המשמש לקביעה האם לדחות את השערת האפס. דוגמאות כוללות את סטטיסטי t, סטטיסטי z, סטטיסטי F וסטטיסטי חי בריבוע. הבחירה של סטטיסטי מבחן תלויה בסוג הנתונים ובהשערה הנבדקת.
רווחי סמך
רווח סמך מספק טווח ערכים שבתוכו סביר שהפרמטר האמיתי של האוכלוסייה ייפול ברמת ביטחון מסוימת (לדוגמה, 95% ביטחון). רווחי סמך קשורים למבחני השערות; אם ערך השערת האפס נופל מחוץ לרווח הסמך, היינו דוחים את השערת האפס.
מבחני השערות נפוצים בפייתון
המודול scipy.stats של פייתון מספק מגוון רחב של פונקציות לביצוע מבחני השערות סטטיסטיות. הנה כמה מהמבחנים הנפוצים ביותר:
1. מבחני T
מבחני T משמשים להשוואת הממוצעים של קבוצה אחת או שתי קבוצות. ישנם שלושה סוגים עיקריים של מבחני t:
- מבחן T חד-מדגמי: משמש להשוואת הממוצע של מדגם בודד לממוצע אוכלוסייה ידוע.
- מבחן T של מדגמים בלתי תלויים (מבחן T דו-מדגמי): משמש להשוואת הממוצעים של שתי קבוצות בלתי תלויות. מבחן זה מניח שהשונות של שתי הקבוצות שווה (או שניתן להתאים אותה אם היא לא).
- מבחן T של מדגמים מזווגים: משמש להשוואת הממוצעים של שתי קבוצות קשורות (לדוגמה, מדידות לפני ואחרי על אותם נבדקים).
דוגמה (מבחן T חד-מדגמי):
נניח שאנו רוצים לבדוק האם ציון הבחינה הממוצע של תלמידים בבית ספר מסוים (יפן) שונה באופן משמעותי מהממוצע הארצי (75). אנו אוספים מדגם של ציוני בחינות מ-30 תלמידים.
```python import numpy as np from scipy import stats # נתוני מדגם (ציוני בחינות) scores = np.array([82, 78, 85, 90, 72, 76, 88, 80, 79, 83, 86, 74, 77, 81, 84, 89, 73, 75, 87, 91, 71, 70, 92, 68, 93, 95, 67, 69, 94, 96]) # ממוצע אוכלוסייה population_mean = 75 # ביצוע מבחן t חד-מדגמי t_statistic, p_value = stats.ttest_1samp(scores, population_mean) print("T-statistic:", t_statistic) print("P-value:", p_value) # בדיקה האם ערך ה-p קטן מאלפא (לדוגמה, 0.05) alpha = 0.05 if p_value < alpha: print("דחה את השערת האפס") else: print("נכשל לדחות את השערת האפס") ```דוגמה (מבחן T של מדגמים בלתי תלויים):
נניח שאנו רוצים להשוות את ההכנסה הממוצעת של מהנדסי תוכנה בשתי מדינות שונות (קנדה ואוסטרליה). אנו אוספים נתוני הכנסה ממדגמים של מהנדסי תוכנה בכל מדינה.
```python import numpy as np from scipy import stats # נתוני הכנסה עבור מהנדסי תוכנה בקנדה (באלפי דולרים) canada_income = np.array([80, 85, 90, 95, 100, 105, 110, 115, 120, 125]) # נתוני הכנסה עבור מהנדסי תוכנה באוסטרליה (באלפי דולרים) australia_income = np.array([75, 80, 85, 90, 95, 100, 105, 110, 115, 120]) # ביצוע מבחן t של מדגמים בלתי תלויים t_statistic, p_value = stats.ttest_ind(canada_income, australia_income) print("T-statistic:", t_statistic) print("P-value:", p_value) # בדיקה האם ערך ה-p קטן מאלפא (לדוגמה, 0.05) alpha = 0.05 if p_value < alpha: print("דחה את השערת האפס") else: print("נכשל לדחות את השערת האפס") ```דוגמה (מבחן T של מדגמים מזווגים):
נניח שחברה בגרמניה מיישמת תוכנית הכשרה חדשה ורוצה לראות אם היא משפרת את ביצועי העובדים. הם מודדים את הביצועים של קבוצת עובדים לפני ואחרי תוכנית ההכשרה.
```python import numpy as np from scipy import stats # נתוני ביצועים לפני הכשרה before_training = np.array([60, 65, 70, 75, 80, 85, 90, 95, 100, 105]) # נתוני ביצועים אחרי הכשרה after_training = np.array([70, 75, 80, 85, 90, 95, 100, 105, 110, 115]) # ביצוע מבחן t של מדגמים מזווגים t_statistic, p_value = stats.ttest_rel(after_training, before_training) print("T-statistic:", t_statistic) print("P-value:", p_value) # בדיקה האם ערך ה-p קטן מאלפא (לדוגמה, 0.05) alpha = 0.05 if p_value < alpha: print("דחה את השערת האפס") else: print("נכשל לדחות את השערת האפס") ```2. מבחני Z
מבחני Z משמשים להשוואת הממוצעים של קבוצה אחת או שתי קבוצות כאשר סטיית התקן של האוכלוסייה ידועה או כאשר גודל המדגם גדול מספיק (בדרך כלל n > 30). בדומה למבחני t, ישנם מבחני z חד-מדגמיים ודו-מדגמיים.
דוגמה (מבחן Z חד-מדגמי):
מפעל המייצר נורות בווייטנאם טוען שאורך החיים הממוצע של הנורות שלהם הוא 1000 שעות עם סטיית תקן ידועה של 50 שעות. קבוצת צרכנים בודקת מדגם של 40 נורות.
```python import numpy as np from scipy import stats from statsmodels.stats.weightstats import ztest # נתוני מדגם (אורך חיים של נורות) lifespan = np.array([980, 1020, 990, 1010, 970, 1030, 1000, 960, 1040, 950, 1050, 940, 1060, 930, 1070, 920, 1080, 910, 1090, 900, 1100, 995, 1005, 985, 1015, 975, 1025, 1005, 955, 1045, 945, 1055, 935, 1065, 925, 1075, 915, 1085, 895, 1095]) # ממוצע אוכלוסייה וסטיית תקן population_mean = 1000 population_std = 50 # ביצוע מבחן z חד-מדגמי z_statistic, p_value = ztest(lifespan, value=population_mean) print("Z-statistic:", z_statistic) print("P-value:", p_value) # בדיקה האם ערך ה-p קטן מאלפא (לדוגמה, 0.05) alpha = 0.05 if p_value < alpha: print("דחה את השערת האפס") else: print("נכשל לדחות את השערת האפס") ```3. ANOVA (ניתוח שונות)
ANOVA משמש להשוואת הממוצעים של שלוש קבוצות או יותר. הוא בודק האם יש הבדל משמעותי בין ממוצעי הקבוצות. ישנם סוגים שונים של ANOVA, כולל ANOVA חד-כיווני ו-ANOVA דו-כיווני.
דוגמה (ANOVA חד-כיווני):
חברת שיווק בברזיל רוצה לבדוק האם לשלוש קמפיינים פרסומיים שונים יש השפעה משמעותית על המכירות. הם מודדים את המכירות שנוצרו על ידי כל קמפיין.
```python import numpy as np from scipy import stats # נתוני מכירות עבור כל קמפיין campaign_A = np.array([100, 110, 120, 130, 140]) campaign_B = np.array([110, 120, 130, 140, 150]) campaign_C = np.array([120, 130, 140, 150, 160]) # ביצוע ANOVA חד-כיווני f_statistic, p_value = stats.f_oneway(campaign_A, campaign_B, campaign_C) print("F-statistic:", f_statistic) print("P-value:", p_value) # בדיקה האם ערך ה-p קטן מאלפא (לדוגמה, 0.05) alpha = 0.05 if p_value < alpha: print("דחה את השערת האפס") else: print("דחה את השערת האפס") ```4. מבחן חי בריבוע
מבחן חי בריבוע משמש לניתוח נתונים קטגוריים. הוא בודק האם יש קשר משמעותי בין שני משתנים קטגוריים.
דוגמה (מבחן חי בריבוע):
סקר בדרום אפריקה שואל אנשים על ההשתייכות הפוליטית שלהם (דמוקרט, רפובליקני, עצמאי) ואת דעתם על מדיניות מסוימת (תומך, מתנגד, נייטרלי). אנו רוצים לראות אם יש קשר בין השתייכות פוליטית לחוות דעת על המדיניות.
```python import numpy as np from scipy.stats import chi2_contingency # תדרים שנצפו (טבלת שכיחות) observed = np.array([[50, 30, 20], [20, 40, 40], [30, 30, 40]]) # ביצוע מבחן חי בריבוע chi2_statistic, p_value, dof, expected = chi2_contingency(observed) print("Chi-square statistic:", chi2_statistic) print("P-value:", p_value) print("Degrees of freedom:", dof) print("Expected frequencies:", expected) # בדיקה האם ערך ה-p קטן מאלפא (לדוגמה, 0.05) alpha = 0.05 if p_value < alpha: print("דחה את השערת האפס") else: print("נכשל לדחות את השערת האפס") ```שיקולים מעשיים
1. הנחות של מבחני השערות
למבחני השערות רבים יש הנחות ספציפיות שיש לעמוד בהן כדי שהתוצאות יהיו תקפות. לדוגמה, מבחני t ו-ANOVA מניחים לעתים קרובות שהנתונים מתפלגים נורמלית ויש להם שונויות שוות. חשוב לבדוק הנחות אלה לפני פירוש תוצאות המבחנים. הפרות של הנחות אלה עלולות להוביל למסקנות לא מדויקות.
2. גודל מדגם וניתוח עוצמה
גודל המדגם ממלא תפקיד מכריע בעוצמת מבחן השערות. גודל מדגם גדול יותר מגדיל בדרך כלל את עוצמת המבחן, מה שמגדיל את הסבירות לזהות השפעה אמיתית. ניתן להשתמש בניתוח עוצמה כדי לקבוע את גודל המדגם המינימלי הנדרש כדי להשיג רמת עוצמה רצויה.
דוגמה (ניתוח עוצמה):
נניח שאנחנו מתכננים מבחן t ורוצים לקבוע את גודל המדגם הנדרש כדי להשיג עוצמה של 80% עם רמת מובהקות של 5%. עלינו להעריך את גודל ההשפעה (ההבדל בין הממוצעים שאנו רוצים לזהות) ואת סטיית התקן.
```python from statsmodels.stats.power import TTestIndPower # פרמטרים effect_size = 0.5 # Cohen's d alpha = 0.05 power = 0.8 # ביצוע ניתוח עוצמה analysis = TTestIndPower() sample_size = analysis.solve_power(effect_size=effect_size, power=power, alpha=alpha, ratio=1) print("גודל מדגם נדרש לכל קבוצה:", sample_size) ```3. ריבוי בדיקות
בעת ביצוע מבחני השערות מרובים, ההסתברות לעשות שגיאה מסוג I (חיובי שגוי) גדלה. כדי לטפל בבעיה זו, חשוב להשתמש בשיטות להתאמת ערכי p, כגון תיקון בונפרוני או הליך בנימיני-הוכברג.
4. פירוש תוצאות בהקשר
חשוב לפרש את תוצאות מבחני ההשערות בהקשר של שאלת המחקר והנתונים המנותחים. תוצאה מובהקת סטטיסטית לא בהכרח מרמזת על משמעות מעשית. שקול את גודל ההשפעה ואת ההשלכות שלה בעולם האמיתי.
נושאים מתקדמים
1. בדיקת השערות בייסיאנית
בדיקת השערות בייסיאנית מספקת גישה חלופית לבדיקת השערות מסורתית (תדירותית). היא כוללת חישוב גורם בייס, הכמות את הראיות להשערה אחת על פני אחרת.
2. מבחנים לא פרמטריים
מבחנים לא פרמטריים משמשים כאשר ההנחות של מבחנים פרמטריים (לדוגמה, נורמליות) אינן מתקיימות. דוגמאות כוללות את מבחן Mann-Whitney U, מבחן Wilcoxon signed-rank ומבחן Kruskal-Wallis.
3. שיטות דגימה מחדש (Bootstrapping ומבחני פרמוטציה)
שיטות דגימה מחדש, כגון bootstrapping ומבחני פרמוטציה, מספקות דרך להעריך את התפלגות הדגימה של סטטיסטי מבחן מבלי להניח הנחות חזקות לגבי התפלגות האוכלוסייה הבסיסית.
מסקנה
בדיקת השערות סטטיסטית היא כלי רב עוצמה לקבלת החלטות מונחות נתונים בתחומים שונים, כולל מדע, עסקים והנדסה. על ידי הבנת מושגי הליבה, השיטות והשיקולים המעשיים, מדעני נתונים יכולים להשתמש ביעילות בבדיקת השערות כדי להשיג תובנות מנתונים ולהסיק מסקנות משמעותיות. המודול scipy.stats של פייתון מספק סט מקיף של פונקציות לביצוע מגוון רחב של מבחני השערות. זכור לשקול היטב את ההנחות של כל מבחן, את גודל המדגם ואת הפוטנציאל לריבוי בדיקות, ולפרש את התוצאות בהקשר של שאלת המחקר. מדריך זה מספק בסיס איתן להתחיל ליישם שיטות עוצמתיות אלה לבעיות בעולם האמיתי. המשך לחקור ולנסות עם מבחנים וטכניקות שונות כדי להעמיק את ההבנה שלך ולשפר את כישורי מדעי הנתונים שלך.
למידה נוספת:
- קורסים מקוונים בסטטיסטיקה ומדעי הנתונים (לדוגמה, Coursera, edX, DataCamp)
- ספרי לימוד סטטיסטיים
- תיעוד עבור המודול
scipy.statsשל פייתון - מאמרי מחקר ומאמרים על טכניקות ספציפיות לבדיקת השערות